local rtl = require("rtl")
local Animal = require("animal")

local Cat = rtl.class(Animal)

-- 构造函数
function Cat._init(self, name)
	self.name = name
end

-- 覆盖父类的方法
function Cat.say(self)
	print(string.format("I am a cat, my name is %s", self.name))
end

local Dog = rtl.class(Animal)

-- 创建一个Cat对象，并调用say，注意调用时用:让cat对象作为第一个参数传入函数
local cat = Cat("tom")
cat:say()

-- 创建一个Dog对象，调用say，因为Dog并没有实现say函数,因此调用到Animal的say函数，最终抛出一个错误
local dog = Dog()
dog:say()
